/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.InstituicaoAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.dao.DAOInstituicao;
import br.com.sgs.entity.Instituicao;
import br.com.sgs.fachada.InstituicaoFachada;
import br.com.sgs.fachada.InstituicaoIFachada;
import br.com.sgs.util.DataValue;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.inputtext.InputText;

        
             
        
                
/**
 *
 * @author Eric
 */
@ManagedBean(name="instituicaoMB")
@ViewScoped
public class InstituicaoMB implements Serializable {
    
    
    private List<Instituicao> lsinstituicao = new ArrayList<Instituicao>();
    private List<String> lsstatus = new ArrayList<String>();
    
    //instituicao selecionada
    private Instituicao instituicaoselecionada;
    
    //parametro de busca
    private InputText busca;
 
    //campos do visualizar
    private String strnome;
    private String strnomefantasia;
    private String strcnpj;
    private String strstatus;
    private Date strdtcriacao;

    /**
     * Creates a new instance of InstituicaoNew
     */
    public InstituicaoMB() {
    }
    
    @PostConstruct
    public void init() {
        try {

            InstituicaoIFachada ifach = new InstituicaoFachada();
            
            for (DataValue lsd : InstituicaoAux.getStatusLista()) {
                this.getLsstatus().add(lsd.getValue());
            }
                      
            lsinstituicao = ifach.findInstituicaoByAll("", "", "", lsstatus);


        } catch (Exception e) {
            System.err.println("Erro no init do InstituicaoMB");
        }
    }
        
    public void buscar() {
        try {
            
            DAOInstituicao dao = new DAOInstituicao();
            
            for (DataValue lsd : InstituicaoAux.getStatusLista()) {
                this.getLsstatus().add(lsd.getValue());
            }
                      
            lsinstituicao = dao.findInstituicaoByAll(busca.getValue().toString(), "", "", lsstatus);

            
        } catch (Exception e) {
            System.err.println("Erron no método buscar");
            e.printStackTrace();
        }
    }
    
    public void visualizar(Instituicao l) {
        try {

            strnome = l.getNome();
            strnomefantasia = l.getNomefantasia();
            strcnpj = l.getCnpj();
            strstatus = MessageBundleLoader.getMessage(InstituicaoAux.getStatusLabel(l.getStatus()));
            strdtcriacao = l.getDtcriacao();


        } catch (Exception e) {
            System.err.println("Erro no visualizar");
        }
    }
    
    public void excluir() {
        try {

            DAOInstituicao dao = new DAOInstituicao();

            Instituicao i = instituicaoselecionada;
            i.setStatus(InstituicaoAux.EXCLUIDO);            
            dao.alterar(i);
            
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgExcluidoSucesso"), ""));
            atualizarTabela();
            
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("msgexclusaoErro"), ""));
          }

    }

    public String editar() {
        try {
           return "INSTITUICAOEDIT";
        } catch (Exception e) {
           return null;
        }
    }
    
    public void atualizarTabela() {
        try {

            DAOInstituicao dao = new DAOInstituicao();

            for (DataValue lsd : InstituicaoAux.getStatusLista()) {
                this.getLsstatus().add(lsd.getValue());
            }

            lsinstituicao = dao.findInstituicaoByAll("", "", "", lsstatus);

        } catch (Exception e) {
            System.err.println("Erro no metodo atualizarTabela");
        }
    }
    
     public void voltar(){
         try {
             
         } catch (Exception e) {
             System.err.println("Erro no método voltar");
         }        
    }
    
    public void selecionarRegistro(Instituicao l){
        try {
          
            instituicaoselecionada = l;
            
        } catch (Exception e) {
            System.err.println("Erro no metodo selecionarRegistro");
        }
        
    }
    
    public String strStatusLabel(int st) {
        return MessageBundleLoader.getMessage(InstituicaoAux.getStatusLabel(st));
    }
    
    
            
   /**
     * @return the lsinstituicao
     */
    public List<Instituicao> getLsinstituicao() {
        return lsinstituicao;
    }

    /**
     * @param lsinstituicao the lsinstituicao to set
     */
    public void setLsinstituicao(List<Instituicao> lsinstituicao) {
        this.lsinstituicao = lsinstituicao;
    }

    /**
     * @return the lsstatus
     */
    public List<String> getLsstatus() {
        return lsstatus;
    }

    /**
     * @param lsstatus the lsstatus to set
     */
    public void setLsstatus(List<String> lsstatus) {
        this.lsstatus = lsstatus;
    }

    /**
     * @return the strnome
     */
    public String getStrnome() {
        return strnome;
    }

    /**
     * @param strnome the strnome to set
     */
    public void setStrnome(String strnome) {
        this.strnome = strnome;
    }

    /**
     * @return the strnomefantasia
     */
    public String getStrnomefantasia() {
        return strnomefantasia;
    }

    /**
     * @param strnomefantasia the strnomefantasia to set
     */
    public void setStrnomefantasia(String strnomefantasia) {
        this.strnomefantasia = strnomefantasia;
    }

    /**
     * @return the strcnpj
     */
    public String getStrcnpj() {
        return strcnpj;
    }

    /**
     * @param strcnpj the strcnpj to set
     */
    public void setStrcnpj(String strcnpj) {
        this.strcnpj = strcnpj;
    }

    /**
     * @return the strstatus
     */
    public String getStrstatus() {
        return strstatus;
    }

    /**
     * @param strstatus the strstatus to set
     */
    public void setStrstatus(String strstatus) {
        this.strstatus = strstatus;
    }

    /**
     * @return the instituicaoselecionada
     */
    public Instituicao getInstituicaoselecionada() {
        return instituicaoselecionada;
    }

    /**
     * @param instituicaoselecionada the instituicaoselecionada to set
     */
    public void setInstituicaoselecionada(Instituicao instituicaoselecionada) {
        this.instituicaoselecionada = instituicaoselecionada;
    }

    /**
     * @return the busca
     */
    public InputText getBusca() {
        return busca;
    }

    /**
     * @param busca the busca to set
     */
    public void setBusca(InputText busca) {
        this.busca = busca;
    }

    /**
     * @return the strdtcriacao
     */
    public Date getStrdtcriacao() {
        return strdtcriacao;
    }

    /**
     * @param strdtcriacao the strdtcriacao to set
     */
    public void setStrdtcriacao(Date strdtcriacao) {
        this.strdtcriacao = strdtcriacao;
    }
     
}
